#pragma region 【算法5 - 12】有向网的拓扑排序 
int Top_Sort(VertexNode AdjList[N], int Tsort[])
{                           //图G用邻接表存储，顶点结点带入度域，求其拓扑序列；其拓扑序列存入Tsort 向量
    Queue Q;                // Q为一队列
    int m = 0;              // c为计数器，记录已输出的顶点数目
    Init_Queue(Q);          //初始化队列Q
    for (i = 0; i < N; i++) //依次将入度为0的顶点入队
        if (AdjList[i].indegree == 0)
            In_Queue(Q, i);
    while (!EmptyQueue(Q))
    {
        Out_Queue(Q, j);
        Tsort[m] = j; //点j进入拓扑序列中
        m++;
        p = AdjList[j].firstedge; // p指向当前输出结点的边表
        while (p)
        //对当前输出结点的各邻接点依次处理
        {
            k = p->adjvex;
            AdjList[k].indegree--;        //当前输出顶点邻接点的入度减1
            if (AdjList[k].indegree == 0) //新的入度为0的顶点入队
                In_Queue(Q, k);
            p = p->next; //找到下一个邻接点
        }
    }
    if (m < N)
    {
        printf("网络有回路");
        return 0;
    } //图中有环路存在
    else
        return 1;
}
#pragma endregion